/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package fr.uniscol;

import fr.uniscol.model.Classe;
import fr.uniscol.model.Eleve;
import fr.uniscol.model.Groupe;
import fr.uniscol.model.IUniscolUser;
import fr.uniscol.model.ServiceEnseignant;
import fr.uniscol.mvc.SessionExpireeException;
import fr.uniscol.service.IEleveService;
import fr.uniscol.service.IEnseignantService;
import fr.uniscol.service.IGroupeService;
import java.util.List;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

/**
 *
 * @author Christophe
 */
@Controller
public class GroupeController extends UniscolMainController {
    
    @Autowired
    private IGroupeService groupeService;
    
    @Autowired
    private IEleveService eleveService;
    
    @Autowired
    private IEnseignantService enseignantService;
    
    @RequestMapping("/groupes")
    public ModelAndView list(HttpSession session){
        
        List<Groupe> groupes = groupeService.getAllGroupesOfEtablissement(getUtilisateur(session).getBaseSelectionnee());
        
        return new ModelAndView("groupes", "groupes", groupes);
    }
    
    @RequestMapping("/groupe.edit")
    public ModelAndView editGroupe(@RequestParam("structureid") long structureId, Model model, HttpSession session){
        
        Groupe groupe = groupeService.getGroupeById(structureId);
        
        List<Eleve> eleves = eleveService.getAllElevesOfClasse(groupe);
        groupe.setEleves(eleves);
        
        List<ServiceEnseignant> services = enseignantService.getServicesOfGroupe(groupe);
        groupe.setServices(services);
        
        model.addAttribute("eleves", eleves);
        model.addAttribute("services", services);
        model.addAttribute("groupe", groupe);
        
        return new ModelAndView("groupe", "groupe", groupe);
    }
}
